/*     */ package competitie;
/*     */ 
/*     */ class SpelBord
/*     */ {
/*     */   static final int FACTOR = 2;
/*     */   private int[][] matrix;
/*     */ 
/*     */   SpelBord()
/*     */   {
/*  15 */     this.matrix = new int[8][8];
/*  16 */     maakBordLeeg();
/*  17 */     plaatsBeginStenen();
/*     */   }
/*     */ 
/*     */   SpelBord(int[][] matrix) {
/*  21 */     this.matrix = matrix;
/*     */   }
/*     */ 
/*     */   void plaatsBeginStenen() {
/*  25 */     this.matrix[3][3] = 1;
/*  26 */     this.matrix[3][4] = 2;
/*  27 */     this.matrix[4][3] = 2;
/*  28 */     this.matrix[4][4] = 1;
/*     */   }
/*     */ 
/*     */   void maakBordLeeg() {
/*  32 */     for (int i = 0; i < 8; i++)
/*  33 */       for (int j = 0; j < 8; j++)
/*  34 */         this.matrix[i][j] = 0;
/*     */   }
/*     */ 
/*     */   void plaatsCoordinaat(Coordinaat c, int speler)
/*     */   {
/*  40 */     int x = c.getX();
/*  41 */     int y = c.getY();
/*  42 */     this.matrix[x][y] = speler;
/*     */   }
/*     */ 
/*     */   void plaatsCoordinaatRij(CoordinaatRij rij, int speler) {
/*  46 */     for (int i = 0; i < rij.getAantalCoordinaten(); i++) {
/*  47 */       Coordinaat coordinaat = rij.getCoord(i);
/*  48 */       plaatsCoordinaat(coordinaat, speler);
/*     */     }
/*     */   }
/*     */ 
/*     */   void verwijderCoordinaat(Coordinaat c) {
/*  53 */     plaatsCoordinaat(c, 0);
/*     */   }
/*     */ 
/*     */   void plaatsVorigeZet(Zet z, int speler) {
/*  57 */     verwijderCoordinaat(z.getGezetteSteen());
/*  58 */     plaatsCoordinaatRij(z.getGeslagenStenen(), speler);
/*     */   }
/*     */ 
/*     */   static int andereSpeler(int speler) {
/*  62 */     if (speler == 1) {
/*  63 */       return 2;
/*     */     }
/*  65 */     return 1;
/*     */   }
/*     */ 
/*     */   void verwerkVorigeBeurt(Beurt b) {
/*  69 */     if (b.isGepast()) {
/*  70 */       return;
/*     */     }
/*  72 */     int speler = andereSpeler(b.getSpeler());
/*  73 */     plaatsVorigeZet(b.getZet(), speler);
/*     */   }
/*     */ 
/*     */   void plaatsZet(Zet z, int speler) {
/*  77 */     plaatsCoordinaat(z.getGezetteSteen(), speler);
/*  78 */     plaatsCoordinaatRij(z.getGeslagenStenen(), speler);
/*     */   }
/*     */ 
/*     */   void verwerkVolgendeBeurt(Beurt b) {
/*  82 */     if (b.isGepast()) {
/*  83 */       return;
/*     */     }
/*  85 */     plaatsZet(b.getZet(), b.getSpeler());
/*     */   }
/*     */ 
/*     */   int getWaardeVanPositie(int x, int y) {
/*  89 */     return this.matrix[x][y];
/*     */   }
/*     */ 
/*     */   boolean notOutOfBounds(Coordinaat c) {
/*  93 */     int x = c.getX();
/*  94 */     int y = c.getY();
/*  95 */     return (x >= 0) && (x < 8) && (y >= 0) && (y < 8);
/*     */   }
/*     */ 
/*     */   boolean isCoordinaatLeeg(Coordinaat c) {
/*  99 */     int x = c.getX();
/* 100 */     int y = c.getY();
/* 101 */     return this.matrix[x][y] == 0;
/*     */   }
/*     */ 
/*     */   boolean isCoordinaatSpeler(Coordinaat c, int speler) {
/* 105 */     int x = c.getX();
/* 106 */     int y = c.getY();
/* 107 */     return this.matrix[x][y] == speler;
/*     */   }
/*     */ 
/*     */   CoordinaatRij geefIngeslotenCoordinatenInRichting(Richting r, Coordinaat c, int speler) {
/* 111 */     int aantalVelden = 64;
/* 112 */     CoordinaatRij rij = new CoordinaatRij(aantalVelden);
/* 113 */     c.verschuifInRichting(r);
/* 114 */     int tegenSpeler = andereSpeler(speler);
/* 115 */     while (notOutOfBounds(c)) {
/* 116 */       if (isCoordinaatLeeg(c)) {
/* 117 */         return new CoordinaatRij(aantalVelden);
/*     */       }
/* 119 */       if (isCoordinaatSpeler(c, tegenSpeler)) {
/* 120 */         Coordinaat punt = c.getKopie();
/* 121 */         rij.voegToe(punt);
/*     */       }
/* 123 */       if (isCoordinaatSpeler(c, speler)) {
/* 124 */         return rij;
/*     */       }
/* 126 */       c.verschuifInRichting(r);
/*     */     }
/* 128 */     return new CoordinaatRij(aantalVelden);
/*     */   }
/*     */ 
/*     */   CoordinaatRij geefIngeslotenCoordinaten(Coordinaat c, int speler) {
/* 132 */     int aantalVelden = 64;
/* 133 */     CoordinaatRij coordinaatRij = new CoordinaatRij(aantalVelden);
/* 134 */     if (!isCoordinaatLeeg(c)) {
/* 135 */       return coordinaatRij;
/*     */     }
/* 137 */     for (int n = 0; n < Richting.ACHT_WINDRICHTINGEN.length; n++) {
/* 138 */       Coordinaat punt = c.getKopie();
/* 139 */       Richting richting = Richting.ACHT_WINDRICHTINGEN[n];
/* 140 */       CoordinaatRij toeTeVoegenRij = geefIngeslotenCoordinatenInRichting(richting, punt, speler);
/* 141 */       coordinaatRij.voegRijToe(toeTeVoegenRij);
/*     */     }
/* 143 */     return coordinaatRij;
/*     */   }
/*     */ 
/*     */   ZetRij getMogelijkeZetten(int speler) {
/* 147 */     int aantalVelden = 64;
/* 148 */     ZetRij mogelijkeZetten = new ZetRij(aantalVelden);
/* 149 */     for (int i = 0; i < 8; i++) {
/* 150 */       for (int j = 0; j < 8; j++) {
/* 151 */         Coordinaat c = new Coordinaat(i, j);
/* 152 */         CoordinaatRij ingeslotenCoordinaten = geefIngeslotenCoordinaten(c, speler);
/* 153 */         if (isMogelijkeZet(ingeslotenCoordinaten)) {
/* 154 */           Zet mogelijkeZet = new Zet(c, ingeslotenCoordinaten);
/* 155 */           mogelijkeZetten.voegToe(mogelijkeZet);
/*     */         }
/*     */       }
/*     */     }
/* 159 */     return mogelijkeZetten;
/*     */   }
/*     */ 
/*     */   boolean isMogelijkeZet(CoordinaatRij rij) {
/* 163 */     return rij.getAantalCoordinaten() > 0;
/*     */   }
/*     */ 
/*     */   int aantalBordMogelijkheden() {
/* 167 */     return 128;
/*     */   }
/*     */ 
/*     */   int[][] geefBord() {
/* 171 */     int[][] bord = new int[8][8];
/* 172 */     for (int i = 0; i < 8; i++) {
/* 173 */       for (int j = 0; j < 8; j++) {
/* 174 */         bord[i][j] = this.matrix[i][j];
/*     */       }
/*     */     }
/* 177 */     return bord;
/*     */   }
/*     */ }

/* Location:           /Users/abaart/Downloads/competitie(2).jar
 * Qualified Name:     competitie.SpelBord
 * JD-Core Version:    0.6.0
 */